/**
 * 用于修复UniApp项目中的TypeScript类型注释问题
 * 运行方式: node fix-type-annotations.js
 */

const fs = require('fs');
const path = require('path');

// 需要处理的文件扩展名
const extensions = ['.vue'];

// 扫描目录
function scanDir(dir) {
  const files = fs.readdirSync(dir);
  
  files.forEach(file => {
    const filePath = path.join(dir, file);
    const stat = fs.statSync(filePath);
    
    if (stat.isDirectory()) {
      // 递归处理子目录，但排除node_modules和unpackage
      if (file !== 'node_modules' && file !== 'unpackage') {
        scanDir(filePath);
      }
    } else if (extensions.includes(path.extname(file))) {
      // 处理匹配的文件
      processFile(filePath);
    }
  });
}

// 处理单个文件
function processFile(filePath) {
  console.log(`处理文件: ${filePath}`);
  let content = fs.readFileSync(filePath, 'utf8');
  
  // 将script标签中的lang="ts"移除
  content = content.replace(/<script lang=["']ts["']>/g, '<script>');
  
  // 移除非空断言操作符(!)
  content = content.replace(/(\w+)!/g, '$1');
  
  // 将修改后的内容写回文件
  fs.writeFileSync(filePath, content, 'utf8');
}

// 从当前目录开始扫描
scanDir('.');

console.log('处理完成！'); 